// pages/home/home.js
// 获取应用实例
import request from '../../utils/request'
Page({
    
  /**
   * 页面的初始数据
   */
  data: {
    grap: [], //总数据
    xianshi: [], //限时抢数据
    xinpin: [], //新品上市数据
    xinpinLeft: {}, //左边单个数据
    enjoyLeft: {}, //左边单个数据
    recommend: [], //新品推荐数据,
    allData: [], //获取teacherClassList的所有数据
    detail: {}, //查看详情的对象,
    // 上拉加载
    arr: [], //上拉加载的数据
    page: 1, //上拉显示几页
    count: 2, //上拉一次显示几条数据
    flag: true, //判断数据是否加载完成
    coupon: [], //优惠券
    couponIsShow: false,
    FullReduction: 200,
  },
  // 跳转到搜索页
  toSearch() {
    wx.navigateTo({
      url: '/component/search/search',
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取优惠券
    this.getCoupon()
    // 获取数据
    this.getData()
    // 获取teacherClassList的所有数据
    this.getTeacherClassData()
    // 获取上拉加载数据
    this.getArrData()
  },
   // 获取优惠券
   async getCoupon(params) {
    await request('/users/coupon', params, {}, "GET").then((res) => {
      this.setData({
        coupon: res
      })
    })
  },
  // 获取总数据
  async getData(params) {
    await request('/users/lecture', params, {}, "GET").then((res) => {
      this.setData({
        grap: res
      })
    })
    let grap = this.data.grap.map((item) => {
      item.position = JSON.parse(item.position)
      item.teacherClassList = JSON.parse(item.teacherClassList)
      return item
    })
    // 总数据
    this.setData(grap)
    // 限时抢数据
    this.setData({
      xianshi: grap[0].teacherClassList
    })
    console.log(this.data.xianshi);
    // 美享全年左边
    this.setData({
      enjoyLeft: grap[0].teacherClassList[0]
    })
    // 新品上市数据
    this.setData({
      xinpin: grap[4].teacherClassList
    })
    this.setData({
      xinpinLeft: grap[3].teacherClassList[0]
    })
    // 新品推荐数据
    this.setData({
      recommend: grap[2].teacherClassList
    })
  },
  // 获取teacherClassList 所有数据
  async getTeacherClassData(params) {
    await request('/users/lecture', params, {}, 'GET').then(res => {
      res.map((item) => {
        item.teacherClassList = JSON.parse(item.teacherClassList)
      })
      let arr = [];
      res.forEach((item) => {
        arr.push(...item.teacherClassList)
      })
      this.setData({
        allData: arr
      })
    })
  },
  // 限时抢跳转到详情页
  toDetail(e) {
    let id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `../particulars/particulars?cid=${id}`,
    })
    this.data.allData.forEach((item) => {
      if (item.cid === id) {
        console.log(item);
        this.setData({
          detail: item
        })
      }
    })
  },
  // 领取
  receive(e){ 
    let id = e.target.id
    this.setData({
      couponIsShow:false
    })
    // 优惠券修改
    this.setCoupon()
  },
  // 修改优惠
  setCoupon(){
    console.log(this.data.coupon[0]);
     request('/users/gaiYouhui', {type:this.data.coupon[0].type,data:this.data.coupon[0]}, {}, "POST")
  },
  // 关闭
  cloneCoupon(){
    this.setData({
      couponIsShow:false
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.setData({
      couponIsShow:true
    })
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    wx.showNavigationBarLoading() //在标题栏中显示加载
    setTimeout(function () {
      wx.hideNavigationBarLoading() //完成停止加载
      wx.stopPullDownRefresh() //停止下拉刷新
    }, 1500)
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.flag) {
      // 隔一段时间触发一次
      setTimeout(() => {
        this.setData({
          flag: true
        })
        this.getArrData()
      }, 1500);
    }
  },
  // 获取上拉加载的数据
  async getArrData() {
    let {
      page,
      count,
      arr
    } = this.data;
    await request('/users/getTeacherClassList', {
      start: (page - 1) * count,
      count: 2
    }, {}, 'GET').then(res => {
      console.log(res);
      let {
        row,
        len
      } = res;
      // 如果有数据并且数据的长度小于0，那么接在原数组后面concat拼接加载的数据
      if (row && row.length > 0) {
        page++;
        arr = arr.concat(row)
        this.setData({
          arr,
          page,
          flag: true
        })
      } else { //那么第一页数据直接赋值
        this.setData({
          arr: row
        })
      }
      // 当我请求返回的数组长度为0时，滚动到底部就不用再发起请求了
      if (this.data.arr.length == len) {
        this.setData({
          flag: false
        })
        return
      }
    })
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})